在介紹今天的主題前,想補充昨天提到的 month
這個參數。在昨天的文章裡我有提供一項 官方文件 來介紹在使用上應該填入的值。我昨天的介紹是需填入特定的月份,但其實不完全正確,像是如果輸入 SEPTEMBER
不會只有 9 月的資料,而是會有 9 月 + 10 月的資料,所以在查找相關月份的時候還是要注意這份文件所提供的資料。另外就是,假設我們是輸入數字,數字也不一定是指那個月份,像是剛剛的 9 + 10 月就是用數字 9 來代替全部,然後可以從這個 PR: Update fangraphs month enum to support 'last x' games by abrobert · Pull Request #366 · jldbc/pybaseball (github.com) 看到,其實還有其他數字可以使用,也不會是對應的月份,不過他還沒有合併的最新版本,可以先不用擔心誤植。
昨天在介紹 team
這個參數的時候,有提到這個 method,他可以用來查找各網站的隊伍 ID,我們就來看看如何使用他吧。
team_ids 可以使用兩個參數,不過他們都不是一定要填的,如果不帶任何參數的話會回傳 1876 - 2021 年的各網站隊伍 ID。只到 2021 的原因目前我所知是英文他們是讀取一個 csv 檔 fangraphs_teams.csv 取得 ID 資料,但後來沒更新最新年份的。不過我觀察一下後面幾年的 ID 沒什麼變化,所以可以使用 2021 的資料來使用在最近的球季。
參數:
season
:須為 1876 - 2019 的整數,可以查到該球季的球員 ID。league
:須為字串,預設是 ALL
取得所有聯盟的資料,可能的值有 AL (美聯)、NL(國聯),還有 AA、UA、PL、FL,不過後面的聯盟我不太熟,看有沒有其他人可以幫我補充。為了拿到最近的資料,這邊用 season=2019
來查找:
from pybaseball import team_ids
team_ids(2019)
回傳結果會有 7 個欄位,分別為:
yearID
:第幾年的資料。lgID
:聯盟的ID。teamID
:FanGraphs 使用的隊伍簡寫。franchID
:目前不確定是哪個 method 需要的簡寫,之後查到的話我會再補充,根據官方文件我猜想可能是 Lahman 資料庫的簡寫。teamIDfg
:FanGraphs 使用的隊伍 ID,昨天提到的 team
參數就會需要用這個。teamIDBR
:Baseball Reference 使用的隊伍 ID,之後介紹 BR 的方法會需要用到。teamIDretro
:Retrosheet 使用的隊伍 ID,之後介紹 Retrosheet 的方法會需要用到。回傳的資料大概會是長這樣(取前幾項):
以上三個方法是 FanGraphs 用來取得隊伍的總和資料,不過因為是爬同一個 URL 底下的資料,所以用到的參數也都一樣,可以去參考我前兩天的文章。
甚至可以直接在前面介紹的方法加 team=(0, ts)
也可以得到同樣的隊伍總和資料,不過欄位的順序還有資料的排序會不一樣,可能需要注意一下。另外我昨天沒提到的是,如果把 0 改成隊伍 ID 的話就會變成獲得單一球隊的隊伍總和資料。
今天介紹怎麼取得隊伍 ID,跟球員 ID 一樣,之後假設有甚麼 methods 需要相關 ID 就都可以用這個方法查。另外稍微提到了一些跟隊伍相關的其他方法,因為參數使用都一樣就不多再說明,今天也感謝大家耐心都收看。
最後我想提醒一件事,假設想查找 FanGraphs 相關的原始碼的話,都會在 fangraphs.py 這個檔案裡。隊伍相關的原始碼也在裡面,如果是查 team_batting.py 之類的裡面會是 Baseball Reference 的原始碼,但是官方文件 team_batting.md 是 FanGraphs 的文件,Baseball Reference 的文件會叫 team_batting_bref.md,有點混淆,還請大家多注意。明天會來介紹一些 FanGraphs 上獨有的數據指標跟解釋一些我覺得重要的欄位。